﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Mapa_de_Resultado
{
    public class Estrutura
    {
        public List<Requisicao> requisicao = new List<Requisicao>();

        public void addRequisicao(int cod_req, int req_ext, int cod_cliente, string nomeCliente, int cod_exame, string exame, int cod_leg, string descricao, int sequencia)
        {
            if (!temRequisicao(cod_req))
            {
                Requisicao req = new Requisicao();
                req.cod_req = cod_req;
                req.req_ext = req_ext;

                req.cod_cliente = cod_cliente;
                req.nomeCliente = nomeCliente;
                requisicao.Add(req);
            }
            if (!temExame(cod_req, cod_exame))
            {
                addExame(cod_req, cod_exame, exame);
                addLegenda(cod_req, cod_exame, cod_leg, descricao, sequencia);
            }
            else
            {
                addLegenda(cod_req, cod_exame, cod_leg, descricao,sequencia);
            }
        }
        public void addExame(int cod_req, int cod_exa, string exame)
        {

            for (int i = 0; i < requisicao.Count; i++)
                if (requisicao[i].cod_req == cod_req)
                {
                    for (int k = 0; k < requisicao[i].exame.Count; k++)
                        if (requisicao[i].exame[k].cod_exame == cod_exa)
                            return;

                    Exame exames = new Exame();
                    exames.cod_exame = cod_exa;
                    exames.exame = exame;
                    requisicao[i].exame.Add(exames);
                }
        }
        public bool temRequisicao(int cod_req){
            for (int i = 0; i < requisicao.Count; i++)
                 if (requisicao[i].cod_req == cod_req)
                     return true;
        return false;
        }
        public void addLegenda(int cod_req, int cod_exame, int cod_leg, string descricao, int sequencia)
        {
            if (!temRequisicao(cod_req))
                return;
            if (!temExame(cod_req, cod_exame))
                return;
            for (int i = 0; i < requisicao.Count; i++)
            {
                if (requisicao[i].cod_req == cod_req)
                    for (int j = 0; j < requisicao[i].exame.Count; j++)
                        if (requisicao[i].exame[j].cod_exame == cod_exame)
                        {//agora eu estou no exame q precisa de legenda
                            for (int k = 0; k < requisicao[i].exame[j].legenda.Count; k++)
                                if (requisicao[i].exame[j].legenda[k].cod_legenda == cod_leg)
                                    return;

                            Legenda leg = new Legenda();
                            leg.cod_legenda = cod_leg;
                            leg.legenda = descricao;
                            leg.sequencia = sequencia;
                            requisicao[i].exame[j].legenda.Add(leg);
                        }
            }
        }
        public bool temExame(int cod_req, int cod_exame)
        {
            for (int i = 0; i < requisicao.Count; i++)
                if (requisicao[i].cod_req == cod_req)
                {
                    for (int j = 0; j < requisicao[i].exame.Count; j++)
                        if (requisicao[i]. exame[j].cod_exame == cod_exame)
                            return true;
                    return false;
                } 
            return false;
        }
    }
    public class Requisicao
    {
        public int cod_req;
        public int req_ext;

        public int cod_cliente;
        public string nomeCliente;
        public List<Exame> exame = new List<Exame>();

    }
    public class Exame
    {
        public int cod_exame;
        public string exame;
       
        public List<Legenda> legenda = new List<Legenda>();

    }
    public class Legenda
    {
        public int cod_legenda;
        public string legenda;
        public int sequencia;


    }
}
